package com.ydj.framework.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author
 * @desc ...
 * @date 2021-01-18 16:40:09
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Idempotence {
    /**
     * 默认0.2秒
     */
    long lockTime() default 200L;

    /**
     * 方法执行完就删除key还是让一段时间自动删除
     */
    boolean autoRelease() default false;

    /**
     * 如果刚好正在锁的时间，是否抛出异常
     */
    boolean throwExceptionWhenLocking() default false;

    /**
     * 如果刚好正在锁的时间，是否抛出异常的文字描述
     */
    String throwExceptionWhenLockingMessage() default "您的操作太频繁，请稍后再试";
}
